package thread;
/*
静态方法上如使用|synchronized修饰   该方法一定具有同步效果
静态方法上指定后使用的同步监视器对象不是this 而是当前类的对像  class的实例
 */
public class SyncDemo {
    public static void main(String[] args) {
        Foo fi = new Foo();
        Foo fo = new Foo();
        Thread t1 = new Thread(){
            @Override
            public void run() {
                fi.dosome();
            }
        };
        Thread t2 = new Thread(){
          public void run(){
              fo.dosome();
          }
        };
        t1.start();
        t2.start();


    }

}
class Foo{
    public synchronized static void dosome(){
        /*
         在静态方法中使用同步块 那么指定同步监视器对象通常使用当前类的对象
         类名。class
         */
        synchronized (Foo.class){
        Thread t = Thread.currentThread();
        System.out.println(t.getName()+"正在执行");
        try {
            Thread.sleep(5000);
        } catch (InterruptedException e) {
        }
        System.out.println(t.getName()+"执行完毕");
    }}
}